package org.jsola.hr.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import org.jsola.core.dto.BaseDTO;

import java.util.Date;
import javax.validation.constraints.NotNull;

import static org.jsola.core.example.BaseExample.E_ID;
import static org.jsola.core.example.BaseExample.M_ID_NOT_NULL;
import static org.jsola.core.example.BaseExample.N_ID;
import static org.jsola.hr.example.BookingsBusinessExample.E_BOOKINGS_BEGIN_DATE;
import static org.jsola.hr.example.BookingsBusinessExample.E_BOOKINGS_BUSINESS;
import static org.jsola.hr.example.BookingsBusinessExample.E_BOOKINGS_COUNT;
import static org.jsola.hr.example.BookingsBusinessExample.E_BOOKINGS_END_DATE;
import static org.jsola.hr.example.BookingsBusinessExample.E_BOOKINGS_REMAINING_COUNT;
import static org.jsola.hr.example.BookingsBusinessExample.E_BUSINESS_BEGIN_DATE;
import static org.jsola.hr.example.BookingsBusinessExample.E_BUSINESS_END_DATE;
import static org.jsola.hr.example.BookingsBusinessExample.E_SERVICE_FALL;
import static org.jsola.hr.example.BookingsBusinessExample.M_BOOKINGS_BEGIN_DATE_NOT_NULL;
import static org.jsola.hr.example.BookingsBusinessExample.M_BOOKINGS_BUSINESS_MAX;
import static org.jsola.hr.example.BookingsBusinessExample.M_BOOKINGS_COUNT_NOT_NULL;
import static org.jsola.hr.example.BookingsBusinessExample.M_BOOKINGS_END_DATE_NOT_NULL;
import static org.jsola.hr.example.BookingsBusinessExample.M_BUSINESS_BEGIN_DATE_NOT_NULL;
import static org.jsola.hr.example.BookingsBusinessExample.M_BUSINESS_END_DATE_NOT_NULL;
import static org.jsola.hr.example.BookingsBusinessExample.M_SERVICE_FALL_MAX;
import static org.jsola.hr.example.BookingsBusinessExample.N_BOOKINGS_BEGIN_DATE;
import static org.jsola.hr.example.BookingsBusinessExample.N_BOOKINGS_BUSINESS;
import static org.jsola.hr.example.BookingsBusinessExample.N_BOOKINGS_COUNT;
import static org.jsola.hr.example.BookingsBusinessExample.N_BOOKINGS_END_DATE;
import static org.jsola.hr.example.BookingsBusinessExample.N_BOOKINGS_REMAINING_COUNT;
import static org.jsola.hr.example.BookingsBusinessExample.N_BUSINESS_BEGIN_DATE;
import static org.jsola.hr.example.BookingsBusinessExample.N_BUSINESS_END_DATE;
import static org.jsola.hr.example.BookingsBusinessExample.N_SERVICE_FALL;

/**
 * 预约业务主表
 *
 * @author zhr
 */
@EqualsAndHashCode(callSuper = true)
@ApiModel(description = "修改【预约业务主表】的参数")
@Data
public class BookingsBusinessUpdateDTO extends BaseDTO {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(notes = N_ID, example = E_ID, required = true)
    @NotNull(message = M_ID_NOT_NULL)
    private Long id;

    @ApiModelProperty(notes = N_BOOKINGS_BUSINESS, example = E_BOOKINGS_BUSINESS)
    @Length(max = 50, message = M_BOOKINGS_BUSINESS_MAX)
    private String bookingsBusiness;

    @ApiModelProperty(notes = N_SERVICE_FALL, example = E_SERVICE_FALL)
    @Length(max = 50, message = M_SERVICE_FALL_MAX)
    private String serviceFall;

    @ApiModelProperty(notes = N_BOOKINGS_COUNT, example = E_BOOKINGS_COUNT, required = true)
    @NotNull(message = M_BOOKINGS_COUNT_NOT_NULL)
    private Integer bookingsCount;

    @ApiModelProperty(notes = N_BOOKINGS_REMAINING_COUNT, example = E_BOOKINGS_REMAINING_COUNT)
    private Integer bookingsRemainingCount;

    @ApiModelProperty(notes = N_BOOKINGS_BEGIN_DATE, example = E_BOOKINGS_BEGIN_DATE, required = true)
    @NotNull(message = M_BOOKINGS_BEGIN_DATE_NOT_NULL)
    private Date bookingsBeginDate;

    @ApiModelProperty(notes = N_BOOKINGS_END_DATE, example = E_BOOKINGS_END_DATE, required = true)
    @NotNull(message = M_BOOKINGS_END_DATE_NOT_NULL)
    private Date bookingsEndDate;

    @ApiModelProperty(notes = N_BUSINESS_BEGIN_DATE, example = E_BUSINESS_BEGIN_DATE, required = true)
    @NotNull(message = M_BUSINESS_BEGIN_DATE_NOT_NULL)
    private Date businessBeginDate;

    @ApiModelProperty(notes = N_BUSINESS_END_DATE, example = E_BUSINESS_END_DATE, required = true)
    @NotNull(message = M_BUSINESS_END_DATE_NOT_NULL)
    private Date businessEndDate;


}

